package com.zjsru.plan2023.oneday;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: cookLee
 * @Date: 2023-12-25
 * 不浪费原料的汉堡制作方案
 * 巨无霸汉堡：4 片番茄和 1 片奶酪
 * 小皇堡：2 片番茄和 1 片奶酪
 * 如果无法使剩下的番茄片 tomatoSlices 和奶酪片 cheeseSlices 的数量为 0，就请返回 []。
 */
public class NumOfBurgers {

    /**
     * 主
     * \
     * 输入：tomatoSlices = 16, cheeseSlices = 7
     * 输出：[1,6]
     * 解释：制作 1 个巨无霸汉堡和 6 个小皇堡需要 4*1 + 2*6 = 16 片番茄和 1 + 6 = 7 片奶酪。不会剩下原料。
     * \
     * 输入：tomatoSlices = 17, cheeseSlices = 4
     * 输出：[]
     * 解释：只制作小皇堡和巨无霸汉堡无法用光全部原料。
     * \
     * 输入：tomatoSlices = 4, cheeseSlices = 17
     * 输出：[]
     * 解释：制作 1 个巨无霸汉堡会剩下 16 片奶酪，制作 2 个小皇堡会剩下 15 片奶酪。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        NumOfBurgers numOfBurgers = new NumOfBurgers();
        int tomatoSlices = 16;
        int cheeseSlices = 7;
        System.out.println(numOfBurgers.numOfBurgers(tomatoSlices, cheeseSlices));
    }

    /**
     * num汉堡
     * 数学
     * @param tomatoSlices 番茄片
     * @param cheeseSlices 奶酪片
     * @return {@link List}<{@link Integer}>
     */
    public List<Integer> numOfBurgers(int tomatoSlices, int cheeseSlices) {
        if (tomatoSlices % 2 != 0 || tomatoSlices < cheeseSlices * 2 || cheeseSlices * 4 < tomatoSlices) {
            return new ArrayList<>();
        }
        //解二元一次方程即可,因为要满足不能浪费的原则所以必须是等于，分别在集合里添加对应的XY的值即可
        //4x+2y=tomatoSlices
        //x+y=cheeseSlices
        List<Integer> list = new ArrayList<>();
        //大皇堡的数量:tomatoSlices≥2×cheeseSlices
        list.add(tomatoSlices / 2 - cheeseSlices);
        //小皇堡的数量 4×cheeseSlices≥tomatoSlices
        list.add(cheeseSlices * 2 - tomatoSlices / 2);
        return list;
    }

}
